<?php

class Produto {

    private $idProduto;
    private $descricao;
    private $quantidade;
    private $nome;
    private $valor;
    private $tamanho;
    private $categoria;
    private $mdesc;
    private $catDescricao;
    private $medida;
    //variaveis internas
    private $bd; //conexão com o banco

    public function __construct() {
        $this->bd = new bd();
    }

    public function __get($key) {
        return $this->$key;
    }

    //método de retorno de valores do objeto
    public function __set($key, $value) {
        $this->$key = $value;
    }

    //METODOS
    //BANCO DE DADOS
    public function inserir() {

        $sql = "INSERT INTO produto (descricao,quantidade,nome,valor,tamanho,categoria)
                VALUES ('$this->descricao' ,$this->quantidade,'$this->nome',$this->valor ,$this->tamanho,$this->categoria)";

        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function listar($complemento = "") {
        $sql = "SELECT * FROM produto " . $complemento;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Produto();
            $obj->idProduto = $reg["idproduto"];
            $obj->descricao = $reg["descricao"];
            $obj->quantidade = $reg["quantidade"];
            $obj->nome = $reg["nome"];
            $obj->valor = $reg["valor"];
            $obj->tamanho = $reg["tamanho"];
            $obj->categoria = $reg["categoria"];

            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function excluir() {

        $sql = "UPDATE produto SET ativo=0 WHERE idproduto =$this->idProduto";
        $retorno = pg_query($sql);
        return $sql;
    }

// --------------------------------------------------------------------------
    public function excluirVerifica() {
        $sql = "SELECT *  FROM produto "
                . " INNER JOIN pedido_item ON produto.idproduto = pedido_item.cod_produto"
                . " WHERE produto.ativo=1 AND idproduto =$this->idProduto";
        $retorno = pg_query($sql);
        $total = pg_num_rows($retorno);
        return $total;
    }

// --------------------------------------------------------------------------
    public function atualizar() {
        $retorno = false;                                 // nome dos campos
        $sql = "UPDATE produto SET
                     descricao         ='$this->descricao',
                     quantidade        ='$this->quantidade',
                     nome              ='$this->nome',
                     valor             ='$this->valor',
                     tamanho           ='$this->tamanho',
                     categoria          ='$this->categoria'
                     where idproduto   =$this->idProduto";
        $retorno = pg_query($sql);

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function retornarUnico() {
        $sql = "SELECT * FROM produto WHERE ativo=1 AND idproduto='$this->idProduto'";

        $resultado = pg_query($sql);
        $retorno = NULL;

        $req = pg_fetch_assoc($resultado);
        if ($req == true) {
            $obj = new Produto();
            $obj->idProduto = $req["idproduto"];
            $obj->descricao = $req["descricao"];
            $obj->quantidade = $req["quantidade"];
            $obj->nome = $req["nome"];
            $obj->valor = $req["valor"];
            $obj->tamanho = $req["tamanho"];
            $obj->categoria = $req["categoria"];

            $retorno = $obj;
        }

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function listarJoin($complemento = "") {

        $sql = "SELECT produto.*,medida.*,categoria.*
        FROM produto
        INNER JOIN medida ON produto.tamanho = medida.idmedida
        INNER JOIN categoria ON produto.categoria = categoria.idcategoria
        " . $complemento;


        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Produto();
            $obj->idProduto = $reg["idproduto"];
            $obj->descricao = $reg["descricao"];
            $obj->quantidade = $reg["quantidade"];
            $obj->nome = $reg["nome"];
            $obj->valor = $reg["valor"];
            $obj->tamanho = $reg["tamanho"];
            $obj->categoria = $reg["categoria"];
            $obj->mdesc = $reg["medidadescricao"];
            $obj->catDescricao = $reg["catdescricao"];
            $obj->medida = $reg["medidadescricao"];

            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function produtoTamanho($id) {

        $sql = "SELECT medida.idmedida, medida.medidadescricao FROM categoria
            JOIN categoria_medida ON categoria_medida.categoriaid = $id
            JOIN medida ON medida.idmedida = categoria_medida.medidaid
            WHERE medida.ativo=1
            GROUP BY 1
            ORDER BY 1,2";
        $tamanhos = pg_query($sql);
        while ($linha = pg_fetch_assoc($tamanhos)) {
            echo "<option value=\"{$linha['idmedida']}\"> {$linha['medidadescricao']} </option>";
        }
    }

// --------------------------------------------------------------------------
    public function produtoTamanhoEditar($id) {

        $sql = "SELECT * FROM produto WHERE ativo=1 AND idproduto=" . $id;
        $result = pg_query($sql);
        $medida = pg_fetch_assoc($result);

        $sql2 = "SELECT idmedida,medidadescricao FROM medida
                WHERE ativo=1
                ORDER BY 2";
        $tamanho = pg_query($sql2);

        while ($linha = pg_fetch_assoc($tamanho)) {
            if ($medida['tamanho'] == $linha['idmedida']) {
                echo "<option selected=\"true\" value=\"{$linha['idmedida']}\"> {$linha['medidadescricao']} </option>";
            } else {
                echo "<option value=\"{$linha['idmedida']}\"> {$linha['medidadescricao']} </option>";
            }
        }
    }

// --------------------------------------------------------------------------
    public function produtoCombo() {

        $sql = "SELECT idcategoria,catdescricao FROM categoria
                WHERE ativo=1
                ORDER BY 2";
        $categoria = pg_query($sql);
        while ($linha = pg_fetch_assoc($categoria)) {
            echo "<option value=\"{$linha['idcategoria']}\"> {$linha['catdescricao']}</option>";
        }
    }

// --------------------------------------------------------------------------
    public function produtoCategoria() {

        $sql = "SELECT idcategoria,catdescricao FROM categoria
                WHERE ativo=1
                ORDER BY 2";
        $categoria = pg_query($sql);
        while ($linha = pg_fetch_assoc($categoria)) {
            echo "<input type=\"radio\" value=\"{$linha['idcategoria']}\" name=\"categoria\"> {$linha['catdescricao']}<br>";
        }
    }

// --------------------------------------------------------------------------
    public function produtoCategoriaEditar($id) {

        $sql = "SELECT * FROM produto WHERE ativo=1 AND idproduto=" . $id;
        $result = pg_query($sql);
        $medida = pg_fetch_assoc($result);

        $sql2 = "SELECT idcategoria,catdescricao FROM categoria
                WHERE ativo=1
                ORDER BY 2";
        $categoria = pg_query($sql2);

        while ($linha = pg_fetch_assoc($categoria)) {
            if ($medida['tamanho'] == $linha['idcategoria']) {
                echo "<input checked=\"true\" type=\"radio\" value=\"{$linha['idcategoria']}\" name=\"categoria\"> {$linha['catdescricao']}<br>";
            } else {
                echo "<input type=\"radio\" value=\"{$linha['idcategoria']}\" name=\"categoria\"> {$linha['catdescricao']}<br>";
            }
        }
    }

}
